package com.itextpdf.text.pdf.table; import com.itextpdf.testutils.CompareTool; import com.itextpdf.testutils.TestResourceUtils; import com.itextpdf.text.*; import com.itextpdf.text.pdf.ColumnText; import com.itextpdf.text.pdf.PdfPCell; import com.itextpdf.text.pdf.PdfPTable; import com.itextpdf.text.pdf.PdfWriter; import junit.framework.Assert; import org.junit.Before; import org.junit.Test; import org.xml.sax.SAXException; import javax.xml.parsers.ParserConfigurationException; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; public class NestedTablesTest { private String cmpFolder = "./src/test/resources/com/itextpdf/text/pdf/table/nestedTablesTest/"; private String outFolder = "./target/com/itextpdf/text/pdf/table/nestedTablesTest/"; @Before public void setUp() throws Exception { new File(outFolder).mkdirs(); TestResourceUtils.purgeTempFiles(); } @Test(timeout = 30000) public void colorsInTaggedDocumentsTest1() throws IOException, DocumentException, InterruptedException, ParserConfigurationException, SAXException { String output = "nestedTablesTest.pdf"; String cmp = "cmp_nestedTablesTest.pdf"; long startTime = System.nanoTime(); Document doc = new Document(PageSize.A4); FileOutputStream fos = new FileOutputStream(outFolder + output); PdfWriter writer = PdfWriter.getInstance(doc, fos); doc.open(); ColumnText column = new ColumnText(writer.getDirectContent()); column.setSimpleColumn(72, 72, 523, 770); column.addElement(createNestedTables(15)); column.go(); doc.close(); System.out.println((System.nanoTime() - startTime) / 1e9); compareDocuments(output, cmp, false); } private static PdfPTable createNestedTables(int n) { PdfPCell cell = new PdfPCell(); cell.addElement(new Chunk("Hello")); if (n > 0) cell.addElement(createNestedTables(n - 1)); PdfPTable table = new PdfPTable(1); table.addCell(cell); return table; } private void compareDocuments(String out, String cmp, boolean visuallyOnly) throws DocumentException, InterruptedException, IOException { CompareTool compareTool = new CompareTool(); String errorMessage; if (visuallyOnly) { errorMessage = compareTool.compare(outFolder + out, cmpFolder + cmp, outFolder, "diff"); } else { errorMessage = compareTool.compareByContent(outFolder + out, cmpFolder + cmp, outFolder, "diff"); } if (errorMessage != null) Assert.fail(errorMessage); } }